﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

/*if语句*/
/*输⼊⼀个整数，判断是否为奇数*/
int main()
{
	int a;
	scanf("%d", &a);
	if (a % 2 == 1)
		printf("%d是奇数\n",a);
	return 0;
}

/*if...else语句*/
/*输⼊⼀个整数，判断是否为奇数，如果是奇数打印是奇数，否则打印数偶数*/
int main()
{
	int a;
	scanf("%d", &a);
	if (a % 2 == 1)
		printf("%d为奇数\n", a);
	else
		printf("%d为偶数\n", a);
	return 0;
}

/*输⼊⼀个年龄，>= 18岁就输出：成年，否则就输出：未成年*/
int main()
{
	int age;
	scanf("%d", &age);
	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	return 0;
}

/*分支包含多条语句*//*多条语句要用中括号{}括起来*/
/*今天是我的生日，我吃蛋糕；否则，就不吃蛋糕*/
int main()
{
	int answer;
	int Yes = 0;
	int No = 0;
	scanf("%s", &answer);
	printf("今天是你的生日吗？答（是or不是）：%s", answer);
	if (answer=Yes)
	{
		printf("今天是我的生日\n");
		printf("我吃蛋糕\n");
	}
	else
	{
		printf("今天不是是我的生日\n");
		printf("我不吃蛋糕\n");
	}
	return 0;
}

/*嵌套if*/
/*要求输⼊⼀个整数，判断输⼊的整数是0，还是正数或者负数*/
int main()
{
	int a;
	scanf("%d", &a);
	if (a > 0)
		printf("%d是正数", a);
	else if (a == 0)
		printf("输入的是0");
	else
		printf("%d是负数", a);
	return 0;
}

/*输⼊⼀个整数，如果是正数，再判断是奇数还是偶数，并输出；如果不是正数则输出：负数。*/
int main()
{
	int x;
	scanf("%d", &x);
	if (x > 0)
	{
		if (x % 2 == 0)
			printf("%d为偶数", x);
		else
			printf("%d为奇数", x);
	}
	else
		printf("%d为负数", x);
	return 0;
}

/*输⼊⼀个⼈的年龄
如果年龄<18岁，打印"少年"
如果年龄在18岁⾄44岁打印"⻘年"
如果年龄在45岁⾄59岁打印"中⽼年"
如果年龄在60岁⾄89岁打印"⽼年"
如果90岁以上打印"⽼寿星"*/
/*一.多个条件应用多个else if*/
int main()
{
	int age;
	scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else if (age <= 44)
		printf("青年\n");
	else if (age <= 59)
		printf("中老年\n");
	else if (age <= 89)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

/*二.括号括起来容易理解，条件可以重复可以不重复*/
int main()
{
	int age;
	scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else
	{
		if (age <= 44)
			printf("青年\n");
		else
		{
			 if (age <= 59)
				printf("中老年\n");
			 else
			 {
				 if (age <= 89)
					 printf("老年\n");
					else
					{
						printf("老寿星\n");
					}
			 }
		}

	}
	return 0;
}

/*1.4悬空else问题：
如果有多个 if 和 else ，可以记住这样⼀条规则， else 总是跟最接近的 if 匹配。*/
/*将变量写在等号的右边*/

/*条件操作符
exp1 ? exp2 : exp3*/
/*一.如果a>5,b=6;否则，b=-1;*/
int main()
{
	int a,b;
	scanf("%d", &a);
	b = a > 5 ? 6 : -1;
	printf("%d\n", b);
	return 0;
}

/*二.使⽤条件表达式实现找两个数中较⼤值*/
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int c=a > b ? a : b;
	printf("%d\n", c);
	return 0;
}

/*逻辑操作符：&& , || , ！*/
/*一.如果我们说⽉份是3⽉到5⽉，是春天*/
int main()
{
	int month;
	scanf("%d", &month);
	if (month >= 3 && month <= 5)
		printf("春天");
	return 0;
}

/*二.一年中⽉份是12⽉或者1⽉或者2⽉是冬天*/
int main()
{
	int month;
	scanf("%d", &month);
	if (month == 12 || month == 1 || month == 2)
		printf("%d月份是冬天",month);
}

/*三.闰年的判断
1. 能被4整除并且不能被100整除是闰年
2. 能被400整除是闰年*/
int main()
{
	int year;
	scanf("%d", &year);
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
		printf("%d是闰年", year);
	return 0;
}

/*操作符短路问题*/
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	//i = a++ && ++b && d++;
	i = a++||++b||d++;
	printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
	return 0;
}

/*switch语句*/
/*switch (expression//整型表达式) 
{
 case value1: statement
 case value2: statement
 default: statement
}剩余或者找不到就用deafalt*/

/*if与switch语句对比*/
/*一.输⼊任意⼀个整数值，计算除3之后的余数*/
int main()
{
	int a;
	scanf("%d", &a);
	if (a % 3 == 0)
		printf("%d除以3的余数为0",a);
	else if (a % 3 == 1)
		printf("%d除以3的余数为1", a);
	else
		printf("%d除以3的余数为2", a);

	return 0;
}

/*switch（）...case ：break；*/
int main()
{
	int a;
	scanf("%d", &a);
	switch (a % 3)
	{
	case 0:
		printf("%d除以3余数为0\n",a);
		break;
	case 1:
		printf("%d除以3余数为1\n",a);
		break;
	case 2:
		printf("%d除以3余数为2\n", a);
		break;
	}
	return 0;
}

/*二.输⼊⼀个1~7的数字，打印对应的星期⼏*/
int main()
{
	int day;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}
}

/*三.1. 输⼊1-5，输出的是“⼯作⽇”;
2. 输⼊6-7，输出“休息⽇”*/
int main()
{
	int day;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default:
		printf("输入错误\n");
	}
}

/*while循环(先判断，后执行)*/
/*if(表达式)
 语句;
 
 
while(表达式)
 语句;//如果循环体想包含更多的语句，可以加上⼤括号*/

/*在屏幕上打印1~10的值*/
int main()
{
	int a = 1;
	while (a <= 10)
	{
		printf("%d ", a);
		a++;
	}
	return 0;
}

/*输⼊⼀个正的整数，逆序打印这个整数的每⼀位
例如：
输⼊：1234，输出：4 3 2 1
输⼊：521，输出：1 2 5
*/
int main()
{
	int a;
	scanf("%d", &a);
	while (a)
	{
		printf("%d\n", a % 10);
		a /= 10;
	}
	return 0;
}

/*for循环*/
/*for(表达式1变量的初始化; 表达式2结束条件的判断; 表达式3变量的调整)*/
/*先执行，再判断*/

/*在屏幕上打印1~10的值*/
int main()
{
	int a;
	for (a = 1; a <= 10; a++)
	{
		printf("%d\n", a);
	}
	return 0;
}

/*计算1~100之间3的倍数的数字之和*/
int main()
{
	int a;
	int sum = 0;
	for (a = 3; a <= 100 ; a+=3)
	{
		sum += a;
	}
	printf("%d\n", sum);
	return 0;
}

///*do while先执行后判断*/
int main()
{
	int a=1;
	do
	{
		printf("%d ", a);
		a++;
	} while (a <= 10);
	return 0;
}

/*输⼊⼀个正整数，计算这个整数是⼏位数？
例如：
输⼊：1234 输出：4
输⼊：12 输出：2*/
int main()
{
	int a;
	int cnt = 0;
	scanf("%d", &a);
	do
	{
		cnt++;
		a = a / 10;
	} while (a);
	printf("%d", cnt++);
	return 0;
}

/*break 的作⽤是⽤于永久的终⽌循环，只要 break 被执⾏，直接就会跳出循环，继续往后执
⾏。
 continue 的作⽤是跳过本次循环 continue 后边的代码
*/

/*找出100~200之间的素数，并打印在屏幕上。
注：素数⼜称质数，只能被1和本⾝整除的数字。*/
int main()
{
	int a;
	int j = 0;
	for (a = 100; a <= 200; a++)
	{
		int flag = 1;
		for (j = 2; j < a; j++)
		{
			if (a % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
			printf("%d ", a);
	}
	return 0;
}